<?php if ( ! defined('BASEPATH')) exit('No se permite acceso directo al script');
class Extras_form {
	
	public function crearCabecera($headers, $btn_extra = TRUE)
	{
		$cabecera = "<thead>
    					<tr>";
		foreach ($headers as $head) {
			$cabecera .= "<th>$head</th>";
		}

		if($btn_extra)
		{ $cabecera .= "<th></th>"; }

		$cabecera .= "	</tr>
  					</thead>";
  		return $cabecera;
	}

	public function crearRenglon($datos, $es_busqueda, $nombre_controlador, $id_elemento, $btn_extras = array())
	{
		if($es_busqueda) $fila = "<tr ondblclick=\"cargarSeleccionBusqueda('$nombre_controlador', $id_elemento)\">";
		else $fila = "<tr>";

		foreach ($datos as $dato) {
			$fila .= "<td>$dato</td>";
		}

		if(!$es_busqueda)
		{
			$fila .= "<td>";
			foreach ($btn_extras as $boton => $extra) {
				switch ($boton) {
					case 'ver':
					case 'ver2':
					case 'ver3':
						$title = 'Ver los datos del elemento actual';
						$icono = 'fa-file-text-o';
						$mostrarTexto = TRUE;
						if(is_array($extra)) {
							if(isset($extra['nombre_controlador'])) $nombre_controlador = $extra['nombre_controlador'];
							if(isset($extra['id_elemento'])) $id_elemento = $extra['id_elemento'];
							if(isset($extra['title'])) $title = $extra['title'];
							if(isset($extra['icono'])) $icono = $extra['icono'];
							$mostrarTexto = FALSE;
						}

						$fila .= $this->viewButton($nombre_controlador, $id_elemento, $title, $icono, $mostrarTexto) . '&nbsp;';
						break;

					case 'editar':
						$fila .= $this->editButton($nombre_controlador, $id_elemento) . '&nbsp;';
						break;

					case 'editar_personalizado':
						$textoBoton = 'Editar';
						$icono = 'fa fa-pencil';
						if(is_array($extra)) {
							if(isset($extra['nombre_controlador'])) $nombre_controlador = $extra['nombre_controlador'];
							if(isset($extra['id_elemento'])) $id_elemento = $extra['id_elemento'];
							if(isset($extra['textoBoton'])) $textoBoton = $extra['textoBoton'];
							if(isset($extra['icono'])) $icono = $extra['icono'];
						}
						$fila .= $this->editButton($nombre_controlador, $id_elemento, $textoBoton, $icono) . '&nbsp;';
						break;

					case 'borrar':
						$fila .= $this->deleteButton($nombre_controlador, $id_elemento) . '&nbsp;';
						break;

					case 'adjunto':
						$fila .= $this->adjuntoButton($nombre_controlador, $id_elemento) . '&nbsp;';
						break;

					case 'ver_proveedores':
						$fila .= $this->verProveedorButton($id_elemento) . '&nbsp;';
						break;
					
					case 'cambiar_estado':
						$fila .= $this->cambiarEstadoButton($nombre_controlador, $extra[0], $id_elemento, $extra[1]);
						break;

					case 'conf_excel':
						$tipo_exp = 'conf_XLS';
						$controlador = 'Conf_exportacion_excel';
						if(is_array($extra)) if(isset($extra['tipo_exp'])) $tipo_exp = $extra['tipo_exp'];
						$fila .= $this->editExportButton($tipo_exp, $controlador, $id_elemento);
						break;

					case 'cargar_imagen':
						$accion = 2;
						$texto = 'Cargar imagen';
						if(is_array($extra)) {
							if(isset($extra['accion'])) $accion = $extra['accion'];
							if(isset($extra['texto'])) $texto = $extra['texto'];
						}
						$fila .= $this->cargarImagenButton($nombre_controlador, $id_elemento, $accion, $texto);
						break;

					case 'boton':
						$nombre = ''; $controlador = ''; $metodo = ''; $descripcion = ''; $icono = '';
						if(is_array($extra)) {
							if(isset($extra['nombre'])) $nombre = $extra['nombre'];
							if(isset($extra['controlador'])) $controlador = $extra['controlador'];
							if(isset($extra['metodo'])) $metodo = $extra['metodo'];
							if(isset($extra['descripcion'])) $descripcion = $extra['descripcion'];
							if(isset($extra['icono'])) $icono = $extra['icono'];
						}
						$fila .= $this->generalButton($controlador, $metodo, $nombre, $descripcion, $icono);
						break;
					
					default:
						break;
				}
			}
			$fila .= "</td>";
		}
		else $fila .= "<td>" . $this->selectButton($nombre_controlador, $id_elemento) . "</td>";

		$fila .= "</tr>";
  		return $fila;
	}

	/*
	IMPORTANTE: el parámetro $es_ayuda, indica si se está utilizando para mostrar el botón generado en la 
	descripción de la ayuda del sistema. En este caso, el botón no tiene acción definida (no debe realizar nada ya
	que únicamente se utiliza a modo ilustrativo)
	
	*************************************************
	        BOTONES UTILIZADOS EN LAS VISTAS
	*************************************************
	*/
	private function generar_boton($texto, $title = '', $accion = '', $icono = '', $class = 'btn btn-default', $type = 'button') {
		$boton = "<button type='$type' 
					class = '$class' 
					title = '$title' 
					alt = '$title'
					$accion
					><span><i class='$icono'></i></span> $texto
		        </button>";
		return $boton;
	}

	public function saveButton($nombre_controlador, $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"guardarForm(this.form.id, '" . $nombre_controlador . "')\"" : '';
		$boton = $this->generar_boton('Guardar', 'Guardar datos ingresados', $accion, 'fa fa-save txt-success');
		return $boton;
	}

	public function saveUploadButton($metodo_upload, $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"$metodo_upload\"" : '';
		$boton = $this->generar_boton('Guardar', 'Guardar datos ingresados', $accion, 'fa fa-save txt-success');
		return $boton;
	}

	public function cancelButton($nombre_controlador, $metodo_ver_todos, $modalDesactivado = FALSE, $es_ayuda = FALSE) {
		if(!$modalDesactivado) {
			$accion = !$es_ayuda ? "onclick=\"cerrarModal()\"" : '';
			$accion .= " id='btnCancelar'";
        }
        else $accion = !$es_ayuda ? "onclick=\"redireccionar('" . site_url($nombre_controlador . '/' . $metodo_ver_todos) . "')\"" : '';
		
		$boton = $this->generar_boton('Cancelar', 'Cancelar los cambios ingresados', $accion, 'fa fa-times txt-danger');
		return $boton;
	}

	public function paginationButton($pagina, $form_filtro, $es_busqueda, $num_pagina, $es_ayuda = FALSE) {
		$pagina = trim(strtolower($pagina));
		switch ($pagina) {
			case 'primera':
				$title = 'Ir a la primera p&aacute;gina de resultados';
				$icono = 'fa fa-angle-double-left';
				break;

			case 'anterior':
				$title = 'Ir a la p&aacute;gina anterior de resultados';
				$icono = 'fa fa-angle-left';
				break;

			case 'siguiente':
				$title = 'Ir a la pr&oacute;xima p&aacute;gina de resultados';
				$icono = 'fa fa-angle-right';
				break;

			case 'ultima':
				$title = 'Ir a la última p&aacute;gina de resultados';
				$icono = 'fa fa-angle-double-right';
				break;
			
			default:
				$title = 'Ir a la primera p&aacute;gina de resultados';
				$icono = 'fa fa-angle-double-left';
				break;
		}

		$accion = !$es_ayuda ? "onclick=\"filtrarDatos('" . $form_filtro . "', $es_busqueda, $num_pagina)\"" : '';
		$boton = $this->generar_boton('', $title, $accion, $icono);
		return $boton;
	}

	public function filterButton($es_busqueda = 'false', $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"filtrarDatos(this.form.id, $es_busqueda, 1)\"" : '';
		$boton = $this->generar_boton('Filtrar', 'Obtener listado según filtros especificados', $accion, 'fa fa-search txt-success');
		return $boton;
	}

	public function clearFilterButton($es_busqueda = 'false', $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"quitarFiltros(this.form.id, $es_busqueda)\"" : '';
		$boton = $this->generar_boton('Todos', 'Obtener todos los elementos', $accion, 'fa fa-bars');
		return $boton;
	}

	public function excelExportButton($nombre_controlador, $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"generarExcel(this.form.id, '" . $nombre_controlador . "')\"" : '';
		$boton = $this->generar_boton('Excel', 'Exportar listado a Excel', $accion, 'fa fa-file-excel-o');
		return $boton;
	}

	public function newButton($nombre_controlador, $parametros = 'NULL', $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', '$parametros')\"" : '';
		$boton = "<div align='center'>" . $this->generar_boton('Nuevo', 'Crear un nuevo elemento', $accion, 'fa fa-file-o') . "</div>";  						
		return $boton;
	}

	public function editButton($nombre_controlador, $id_elemento, $textoBoton = '', $icono = 'fa fa-pencil txt-primary', $es_ayuda = FALSE) {
		if(empty($textoBoton)) $textoBoton = 'Editar';
		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
 		$boton = $this->generar_boton($textoBoton, ($textoBoton == 'Editar' ? 'Editar elemento actual' : $textoBoton), $accion, $icono);
		return $boton;
	}

	public function cambiarClaveButton($nombre_controlador, $id_elemento, $es_ayuda = FALSE) {
		$id_elemento = "'$id_elemento/2'"; # La acción 2 corresponde a Cambiar clave
		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton('Cambiar clave', 'Cambiar clave', $accion, 'fa fa-lock');
		return $boton;
	}

	public function cambiarFotoButton($nombre_controlador, $id_elemento, $es_ayuda = FALSE) {
		$id_elemento = "'$id_elemento/3'"; # La acción 3 corresponde a Cambiar foto
		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton('Cambiar Foto', 'Cambiar Foto', $accion, 'fa fa-photo txt-success');
		return $boton;
	}

	public function cargarImagenButton($nombre_controlador, $id_elemento, $accion = 2, $textoBoton = 'Cargar imagen', $es_ayuda = FALSE) {
		$id_elemento = "'$id_elemento/$accion'"; # La acción corresponde a Cargar foto
		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton($textoBoton, $textoBoton, $accion, 'fa fa-photo txt-success');
		return $boton;
	}

	public function viewButton($nombre_controlador, $id_elemento, $title, $icono, $mostrarTexto = TRUE, $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"visualizar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$icono = 'fa ' . $icono . ' txt-default';
		$boton = $this->generar_boton(($mostrarTexto ? 'Ver' : '' ), $title, $accion, $icono);
		return $boton;
	}

	public function deleteButton($nombre_controlador, $id_elemento, $es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"borrar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton('Borrar', 'Borrar el elemento actual', $accion, 'fa fa-trash-o txt-danger');
		return $boton;
	}

	public function verProveedorButton($id_elemento, $es_ayuda = FALSE) {
		$nombre_controlador = 'prod_prov';
		$accion = !$es_ayuda ? "onclick=\"ver_proveedores('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton('', 'Ver Proveedores', $accion, 'fa fa-suitcase');
		return $boton;
	}

	public function generalButton($controlador, $metodo, $nombre, $descripcion, $icono, $es_ayuda = FALSE) {
		$parametros = "url_sitio + '$controlador/$metodo'";
		$accion = !$es_ayuda ? "onclick=\"mostrarModal($parametros, {}, false)\"" : '';
		$boton = $this->generar_boton($nombre, $descripcion, $accion, $icono);
		return $boton;
	}

	public function adjuntoButton($nombre_controlador, $id_elemento, $es_ayuda = FALSE) {
		if($nombre_controlador == 'prod_productos') $nombre_controlador = 'prod_adjuntos';
		else $nombre_controlador = 'prod_adjuntosMoto';

		$accion = !$es_ayuda ? "onclick=\"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
		$boton = $this->generar_boton('', 'Adjuntos', $accion, 'fa fa-paperclip');
		return $boton;
	}

	public function examinarButton()
	{
		$boton_examinar = "<input type='file' name='userfile' id='userfile'>";
		return $boton_examinar;
	}

	public function editExportButton($tipo_exp, $nombre_controlador, $id_elemento, $es_ayuda = FALSE) {
		switch ($tipo_exp) {
			case 'conf_XLS':
				$nombre = 'Conf. Exportar';
				$icono = 'fa fa-file-excel-o';
				$accion = !$es_ayuda ? "onclick = \"editar('" . $nombre_controlador . "', " . $id_elemento . ")\"" : '';
				break;
			
			default:
				# code...
				break;
		}

		$boton = $this->generar_boton($nombre, $nombre, $accion, $icono);
		return $boton;
	}

	public function cambiarEstadoButton($nombre_controlador, $metodo_cambio_estado, $id_elemento, $baja, $es_ayuda = FALSE) {
		$texto_boton = $baja ? 'Activar' : 'Desactivar';
		$clase_boton = $baja ? 'success' : 'danger';
		$clase_boton = 'btn btn-' . $clase_boton;
		$accion = !$es_ayuda ? "onclick=\"ejecutar_accion_datos('$nombre_controlador/$metodo_cambio_estado/$id_elemento')\"" : '';
		$boton = $this->generar_boton($texto_boton, 'Cambiar el estado del usuario', $accion, 'fa fa-exchange', $clase_boton);
		return $boton;
	}

	public function calcularCUButton($es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"calcular_costo()\"" : '';
		$boton = $this->generar_boton('Calcular CU', 'Calcular costo unitario del producto', $accion, 'fa fa-dollar txt-success');
		return $boton;
	}

	public function cargaVistaPreviaButton($es_ayuda = FALSE) {
		$accion = !$es_ayuda ? "onclick=\"cargar_vista_previa()\"" : '';
		$boton = $this->generar_boton('Cargar vista previa', 'Cargar vista previa', $accion, 'fa fa-spinner');
		return $boton;
	}
	/*
	*************************************************
	     fin BOTONES UTILIZADOS EN LAS VISTAS
	*************************************************
	*/

	public function icono_ayuda($msjMostrar, $id_ayuda, $tamanio = 1, $icono_dibujo = NULL)
	{
		if($icono_dibujo == NULL) $icono_dibujo = 'fa-info-circle txt-info';
		$ancho = $tamanio == 1 ? '80%' : ($tamanio == 2 ? '50%' : '30%');
		$icono = "<i id='icono_ayuda$id_ayuda' class='fa $icono_dibujo' onmouseover='mostrar_msjAyuda(\"$msjMostrar\", \"$id_ayuda\", \"$ancho\")' onmouseout='ocultar_msjAyuda(\"$id_ayuda\")'></i>";
		$icono .= "<div id='box_ayuda$id_ayuda' class='box_ayuda_oculto'></div>";
		return $icono;
	}

	public function inputAutocompletar($nombre_controlador, $valorId, $campoNombre, $valorNombre, $tamanio_div, $tamanio_label, $label = '')
	{	
		$campoNombreHTML = 'f_txt_' . $this->quitarCaracteresEspeciales($campoNombre);
		$campoNombreHTMLid = $campoNombreHTML . '_id';
		$ayuda = $this->icono_ayuda('Ingrese al menos 3 letras para comenzar a buscar coincidencias...', $campoNombreHTML, 3);
		if(empty($label)) $label = $campoNombre;

		$boton_buscar ="<input type='hidden' name='$campoNombreHTMLid' id='$campoNombreHTMLid' value=$valorId>
						<div class='row form-group'>
							<label class='col-sm-$tamanio_label control-label'>$label</label>
							<div class='col-sm-$tamanio_div'>
								<div class='input-group'>
									<input type='text' class='form-control' name='$campoNombreHTML' id='$campoNombreHTML' 
									placeholder='$campoNombre' value='$valorNombre' onkeyup=\"autocompletado(event, this, '$nombre_controlador', '$campoNombreHTML')\">
									<span title='Ingrese texto para buscar coincidencias' class='input-group-addon'><i class='fa fa-search'></i></span>
								</div>
								<div id='sugerencias_$campoNombreHTML' class='box_sugerencias'></div>
							</div>
							$ayuda
						</div>";

	    return $boton_buscar;
	}

	public function quitarCaracteresEspeciales($cadena)
	{
		$cadena = htmlentities($cadena);
		$cadena = preg_replace('/\&(.)[^;]*;/', '\\1', $cadena);
		$cadena = strtolower($cadena);
		return $cadena;
	}


	public function searchButton($nombre_controlador, $nombreEntidad, $valorId, $campoNombre = TRUE, $campoCod = FALSE) {
		$entidadHTML = 'txt_' . $nombre_controlador;
		$idEntidadHTML = 'txt_' . $nombre_controlador . '_id';
		$codigoEntidadHTML = 'txt_' . $nombre_controlador . '_cod';
		$ayuda_busqueda = $this->icono_ayuda('Si conoce el código o nombre del elemento que desea, ingréselo y presione el botón \"Cargar\". En otro caso, utilice el botón \"Buscar\".', 'BUSQ');

		$campos_buscar = "<div class='row form-group box_busqueda'>
							Buscar $nombreEntidad</br>
							<label class='col-sm-2 control-label txt-info'></label>";

		if($campoCod) $campos_buscar .= "<div class='col-sm-2'>
											<input type='text' class='form-control' name='$codigoEntidadHTML' id ='$codigoEntidadHTML' placeholder='Código'>
										</div>";

		$campos_buscar .= "<div class='col-sm-4'>
							<input type='text' class='form-control' name='$entidadHTML' id ='$entidadHTML' placeholder='Nombre $nombreEntidad'>
						   </div>";
		$campos_buscar .= "<div class='col-sm-3'>
							<button onclick=\"cargarSegunFiltros('$nombre_controlador')\" type='button' class = 'btn btn-default' title = 'Cargar datos según lo ingresado' alt = 'Cargar datos según lo ingresado'>
				          		<span><i class='fa fa-spinner'></i></span> Cargar
				        	</button>";
		$campos_buscar .= "<button onclick=\"busqueda('$nombre_controlador')\" type='button' class = 'btn btn-default' title = 'Abrir formulario de búsqueda' alt = 'Abrir formulario de búsqueda'>
				          		<span><i class='fa fa-search'></i></span> Buscar
				        	</button>
				        	$ayuda_busqueda
				          </div>
				         </div>";
		return $campos_buscar;
	}

	public function selectButton($nombre_controlador, $id_elemento) {
		$boton_seleccionar = "<button onclick=\"cargarSeleccionBusqueda('$nombre_controlador', $id_elemento)\" type='button' 
								class = 'btn btn-default' title = 'Seleccionar el elemento actual' alt = 'Seleccionar'>
						          	<span><i class='fa fa-check txt-success'></i></span>
						        </button>";
		return $boton_seleccionar;
	}
}
/* Fin del archivo */